package com.seed.core.util;

import cn.hutool.core.util.StrUtil;
import com.seed.core.pojo.seed.*;
import com.seed.util.StrKit;

import java.util.*;

public class RelationUtil {

//    public static Map<TableType, Set<String>> getColumns1(Relation relation, String condition) {
//        Map<TableType, Set<String>> ret = new HashMap<>();
//        Seed selfSeed = relation.selfSeed();
//        Seed targetSeed = relation.targetSeed();
//        List<String> list = StrKit.bracket(condition, '`', '`');
//        for(String item: list) {
//            String[] ownerAndColumn = StrKit.cutInTwo(item, '.', true);
//            String owner = ownerAndColumn[0];
//            String column = ownerAndColumn[1];
//            TableType tableType = StrUtil.isBlank(owner) ? TableType.self : TableType.valueOf(owner);
//
//            switch (tableType) {
//                case self -> checkColumn(selfSeed, column);
//                case target -> checkColumn(targetSeed, column);
//                case through -> {
//                    if(relation instanceof Habtms habtm) {
//                        checkColumn(habtm.getThroughSeed(), column);
//                    } else if(relation instanceof HasOnes) {
//                        checkColumn(targetSeed, column);
//                    } else {
//                        checkColumn(selfSeed, column);
//                    }
//                }
//            }
//
//            Set<String> columnNames = ret.get(tableType);
//            if(columnNames == null) columnNames = new HashSet<>();
//            columnNames.add(column);
//            ret.put(tableType, columnNames);
//        }
//
//        return ret;
//    }
//
//    public static void checkColumn(Seed seed, String finalColumn) {
//        Set<String> columnNames = seed.getColumns().keySet();
//        if (!columnNames.contains(finalColumn)) {
//            throw new RuntimeException(String.format("【%s】中不存在列【%s】", seed.getName(), finalColumn));
//        }
//    }
}
